package com.docMan.service;

import java.util.List;

import javax.ws.rs.BeanParam;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.docMan.dao.pojo.DocDirectory;
import com.docMan.dao.pojo.DocDisc;

@Path("/DocDirectory")
@Produces({MediaType.APPLICATION_JSON})
public interface DocDirectoryService extends BaseService<DocDirectory> {
	/**
	 * 获取父路径上的directory和disk 对象
	 * @param directoryId
	 * @return
	 */
	abstract List<DocDirectory> getPathDirectory(int directoryId);
	@Path("/saveOrUpdate")
	@POST
	abstract String saveOrUpdateDirectory(@BeanParam DocDirectory docDirectory,@FormParam("humanIds")List<Integer> humanIds);
	
	
	@Path("/getDirectory")
	@POST
	abstract String getDirectory(@FormParam("directoryId")int directoryId);
	
	@Path("/delete")
	@POST
	abstract String deleteDirectory(@FormParam("directoryId") int directoryId);
	
	abstract List<DocDirectory> findHumanSeeableDir(int humanId,int directoryId);
	
	abstract List<DocDirectory> findHumanSeeableDirInDisk(int diskId);
	abstract List<DocDirectory> findHUmanSeeableDirInDirectory(int directoryId);
	
	@POST
	@Path("/getUnIndexFile")
	/**
	 * 获取ftp文件夹下还没有建立索引和插入数据库的文件数量
	 * @return
	 */
	abstract String getUnIndexFile(@FormParam("directoryId") int directoryId);
	
	@POST
	@Path("/indexDirectory")
	abstract String indexDirectory(@FormParam("directoryId") int directoryId,@FormParam("indexNd") int indexNd);

	@POST
	@Path("/personalDirectories")
	abstract String personalDirectory(@FormParam("directoryId")int directoryId);
	abstract void setPersonalDirId();
	
	/**
	 * 根据文件夹的id获取文件夹所在disk的id
	 * @param directoryId
	 * @return
	 */
	abstract int getDirectoryDiskId(int directoryId);
	/**
	 * 根据文件夹的id获取文件夹所在的disk对象
	 * @param docDirectoryId
	 * @return
	 */
	abstract DocDisc getDisk(int docDirectoryId);
	/**
	 * 根据文件夹的id获取该文件夹在哪个网盘下，也就是在哪个部门下，即返回unitid
	 * @param docDirectoryId
	 * @return
	 */
	abstract int getUnitIdByDirectoryId(int docDirectoryId);
	
	/**
	 * 创建自己的个人网盘的文件夹，如果有就不创建，没有就创建，并将个人网盘文件夹的id放到session 中去
	 * @return
	 */
	abstract DocDirectory createPersonalDirectory();
	/**
	 * 返回知识管理下的文件夹
	 * isKnowledge 是1的表示是知识管理的文件夹
	 * @return
	 */
	abstract List<DocDirectory> knowledgeDirectories();
	/**
	 * 返回知识管理下的某个文件夹下的文件夹
	 * @param directoryId
	 * @return
	 */
	abstract List<DocDirectory> knowledgeDirectoriesSub(int directoryId);
}
